package com.softer.wxzj.mapper;

import com.softer.wxzj.entity.FlowInstance;
import com.softer.wxzj.mapper.base.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * RoleMapper class
 *
 * @author zcz
 * @date 2019/1/16
 */
@Repository
public interface FlowInstanceMapper extends BaseMapper<FlowInstance> {

    /**
     * 根据业务id查询正在处于审核中状态的条数
     *
     * @param businessId
     * @return
     */
    int getCountByBusinessId(String businessId);

    /**
     * 修改变更类型表审核状态字段
     *
     * @param id
     * @param flowState
     * @return
     */
    int updateModifyReqFlowState(@Param("id") String id, @Param("flowState") String flowState);

    /**
     * 根据流程类型和业务id查询当前实例
     *
     * @param businessId
     * @return
     */
    FlowInstance getInfoByFlowTypeAnBussId(String businessId);

    /**
     * 审批结束修改实例表
     *
     * @param id
     * @return
     */
    int updateAuditOver(String id);

    /**
     * 查询账号待审核的业务id和区域
     *
     * @param operNo
     * @return
     */
    Map<String, String> getBussIdAndZoneCodeByOperNo(@Param("operNo") String operNo, @Param("flowType") String flowType);

    /**
     * 审批时修改对应业务表状态
     *
     * @param businessTable
     * @param flowState
     * @param businessId
     * @return
     */
    int updateBusinessState(@Param("businessTable") String businessTable, @Param("flowState") String flowState, @Param("businessId") String businessId);

    /**
     * 根据配置id查询审批中的条数
     *
     * @param configId
     * @return
     */
    int getCountByConfigId(String configId);

    /**
     * 根据业务id和流程类型查询列表
     *
     * @param businessId
     * @param flowType
     * @return
     */
    List<FlowInstance> getListByBusinessIdAndFlowType(@Param("businessId") String businessId, @Param("flowType") String flowType, @Param("modifyId") String modifyId);

    /**
     * 根据业务id删除正在审核中的记录
     *
     * @param businessId
     * @return
     */
    int deleteByBussinessId(String businessId);

    /**
     * 审核通过的日期
     *
     * @param bussinessId
     * @return
     */
    String recDate(String bussinessId);

    /**
     * 查询有没有在审核
     *
     * @param businessId
     * @param flowType
     * @return
     */
    int selectChangeHouseAndOwner(@Param("businessId") String businessId, @Param("flowType") String flowType);

    /**
     * 查询房屋变更和单元结构变更
     *
     * @param id
     * @param type
     * @return
     */
    int getCountByBusinessIdByType(@Param("id") String id, @Param("type") String type);

    String selectByName(String id);

    /**
     * 查询这个自然幢在进行什么业务
     *
     * @param buildId
     * @return
     */
    String getListByBusinessId(String buildId);
}
